package com.woniuxy.commons.service.factory;

import com.woniuxy.commons.entity.Goods;
import com.woniuxy.commons.service.FeignGoodsService;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.List;

/**
 * 降级工厂：用来给指定service中对应的方法添加降级方法的
 */
@Component
public class FeignGoodsServiceFactory implements FallbackFactory<FeignGoodsService> {

    @Override
    public FeignGoodsService create(Throwable cause) {
        // 返回的对象就是一个备胎，是IOC容器中同类型对象的备胎，一旦IOC容器中对象的方法调用出现问题
        // 那么就调用当前对象中对应的方法进行降级
        return new FeignGoodsService() {
            // fallback方法
            @Override
            public List<Goods> all() {
                return Arrays.asList(
                        new Goods(1111,"openfeign fallback",1)
                );
            }

            @Override
            public Goods find(int id) {
                return new Goods(1111,"find fallback",10);
            }

            @Override
            public boolean add(Goods goods) {
                return false;
            }

            @Override
            public boolean update(Goods goods) {
                return false;
            }

            @Override
            public void del(int id) {

            }
        };
    }
}
